/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.uniceub.fsw.ativos.dao;

import br.uniceub.fsw.ativos.vo.*;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author ra20603490
 */
public class AtivoDAO {
    private BD bd;

    public AtivoDAO(){
        bd=new BD();
    }

    public boolean salvar(AtivoVO a){
        String SQL="INSERT INTO tb_ativo (NO_Ativo, CD_Projeto, DS_Ativo, ID_Categoria ) VALUES ('<02>', <03>, '<04>', <05>)";
        SQL = SQL.replaceAll("<02>", a.getNoAtivo());
        SQL = SQL.replaceAll("<03>", a.getProjeto().getIdProjeto().toString());
        SQL = SQL.replaceAll("<04>", a.getDsAtivo());
        SQL = SQL.replaceAll("<05>", a.getCategoria().getIdCategoria().toString());
        
        return bd.execSQL(SQL);
    }
    public boolean salvarVersao(String caminho){
        String SQL="INSERT INTO tb_versao (CD_Ativo, TP_Versao, ED_Arquivo, NR_Versao ) VALUES ((select max(ID_Ativo) from tb_ativo), (select max(ID_Ativo) from tb_ativo), '<04>', 1)";
        SQL = SQL.replaceAll("<04>", caminho);

        return bd.execSQL(SQL);
    }

    public ArrayList consultarAtivo(String noAtivo, String idProjeto, String idCategoria, String idAtivo){
        String SQL = "SELECT a.id_ativo, a.id_categoria, a.cd_projeto, a.no_ativo, a.ds_ativo, a.st_bloqueado, p.no_projeto, c.no_categoria "+
                     "FROM TB_ATIVO a, tb_projeto p, tb_categoria c "+
                     "where a.cd_projeto = p.id_projeto "+
                     "AND a.id_categoria = c.id_categoria ";
        if(noAtivo != null){
            SQL = SQL + " AND A.NO_ATIVO LIKE '%"+ noAtivo +"%' ";
        }
        if(idAtivo != null){
            SQL = SQL + " AND A.ID_ATIVO = "+ idAtivo +" ";
        }
        if (idProjeto != null){
            if(new Integer(idProjeto) != 0){
                SQL = SQL + " AND A.CD_PROJETO = "+ idProjeto;
            }
        }
        if (idCategoria != null){
            if(new Integer(idCategoria) != 0){
                SQL = SQL + " AND A.ID_CATEGORIA = "+ idCategoria;
            }
        }
        ArrayList aList=new ArrayList();
        try{
            ResultSet rs=bd.getResultSet(SQL);
            while (rs.next()){
                AtivoVO a = new AtivoVO();
                CategoriaVO c = new CategoriaVO();
                ProjetoVO p = new ProjetoVO();
                a.setIdAtivo(new Integer(rs.getInt("ID_ATIVO")));
                a.setNoAtivo(rs.getString("NO_ATIVO"));
                a.setDsAtivo(rs.getString("DS_ATIVO"));
                c.setIdCategoria(new Integer(rs.getInt("ID_CATEGORIA")));
                c.setNoCategoria(rs.getString("NO_CATEGORIA"));
                a.setCategoria(c);
                p.setIdProjeto(new Integer(rs.getInt("CD_PROJETO")));
                p.setNoProjeto(rs.getString("NO_PROJETO"));
                a.setProjeto(p);
                a.setStBloqueado(new Boolean(rs.getBoolean("ST_BLOQUEADO")));
                aList.add(a);
            }
            rs.close();
        } catch(Exception ex){
            System.out.println("Ativo.consultarAtivo:" + ex.getMessage());
        }
        return aList;
    }

    public ArrayList consultarCategoriaAtivo(Integer idCategoria){
        String SQL = "SELECT NO_Ativo, DS_Ativo from tb_ativo where ID_Categoria = " + idCategoria;
        
        ArrayList aList=new ArrayList();
        try{
            ResultSet rs=bd.getResultSet(SQL);
            while (rs.next()){
                AtivoVO a = new AtivoVO();
                //CategoriaVO c = new CategoriaVO();
                a.setNoAtivo(rs.getString("NO_Ativo"));
                a.setDsAtivo(rs.getString("DS_Ativo"));
                aList.add(a);
            }
            rs.close();
        } catch(Exception ex){
            System.out.println("Ativo.consultarAtivo:" + ex.getMessage());
        }
        return aList;
    }
    /*public boolean apagar(Ativo p){
        String SQL="DELETE FROM Ativo WHERE idAtivo=<01>";
        SQL=SQL.replaceAll("<01>", p.getIdAtivo().toString());
        return bd.execSQL(SQL);
    }

    public boolean alterar(Ativo p){
        String SQL="UPDATE Ativo SET noAtivo='<02>' WHERE idAtivo=<01>";
        SQL=SQL.replaceAll("<01>", p.getIdAtivo().toString());
        SQL=SQL.replaceAll("<02>", p.getNoAtivo());
        return bd.execSQL(SQL);
    }

    public ArrayList consultarPorNome(String noAtivo){
        String SQL="SELECT * FROM Ativo WHERE noAtivo LIKE '%<01>%'";
        SQL=SQL.replaceAll("<01>", noAtivo);

        ArrayList aList=new ArrayList();
        try{
            ResultSet rs=bd.getResultSet(SQL);
            while (rs.next()){
                Ativo p=new Ativo();
                p.setIdAtivo(new Integer(rs.getInt("idAtivo")));
                p.setNoAtivo(rs.getString("noAtivo"));
                aList.add(p);
            }
            rs.close();
        } catch(Exception ex){
            System.out.println("Ativo.consultaPorNome:" + ex.getMessage());
        }
        return aList;
    }

    public Ativo consultarPorId(Integer idAtivo){
        String SQL="SELECT * FROM Ativo WHERE idAtivo = <01>";
        SQL=SQL.replaceAll("<01>", idAtivo.toString());
        Ativo p=new Ativo();

        try{
            ResultSet rs=bd.getResultSet(SQL);
            if (rs.next()){
                p.setIdAtivo(new Integer(rs.getInt("idAtivo")));
                p.setNoAtivo(rs.getString("noAtivo"));
            }
            rs.close();
        } catch(Exception ex){
            System.out.println("Ativo.consultaPorId:" + ex.getMessage());
        }
        return p;
    }*/

}
